//给出一个 32 位的有符号整数，你需要将这个整数中每位上的数字进行反转。 
//
// 示例 1: 
//
// 输入: 123
//输出: 321
// 
//
// 示例 2: 
//
// 输入: -123
//输出: -321
// 
//
// 示例 3: 
//
// 输入: 120
//输出: 21
// 
//
// 注意: 
//
// 假设我们的环境只能存储得下 32 位的有符号整数，则其数值范围为 [−231, 231 − 1]。请根据这个假设，如果反转后整数溢出那么就返回 0。 
// Related Topics 数学 
// 👍 2127 👎 0

package leetcode.editor.cn;

import java.util.Stack;

//Java：整数反转
public class P7ReverseInteger {

    /**
     *
     * 思路：取末位，上个数结果*10+末位就是结果
     *
     * 执行用时： 1 ms , 在所有 Java 提交中击败了 100.00% 的用户 内存消耗： 37.2 MB , 在所有 Java 提交中击败了 24.70% 的用户
     *
     */
    //leetcode submit region begin(Prohibit modification and deletion)
    class Solution {
        public int reverse(int x) {
            int a = 1;
            int b = 1;

            long result = 0;

            while (a != 0) {
                a = x / 10;
                b = x % 10;
                x = a;
                result = result * 10 + b;
            }
            if (result <= -2147483648 || result > 2147483647) {
                result = 0;
            }
            return (int)result;
        }
    }
    //leetcode submit region end(Prohibit modification and deletion)

    public static void main(String[] args) {
        Solution solution = new P7ReverseInteger().new Solution();
        System.out.println(solution.reverse(-2147483648));
        System.out.println(solution.reverse(-123));
        System.out.println(solution.reverse(120));

        // TO TEST
    }

}